#ifndef OS_H
#define OS_H


//下标是选择子，下标指定地址内容的数据结构是描述符
#define GDT_ELEMENT_BYTE_SIZES 8 //GDT表一个描述符（就是表中的一个元素）的大小(单位:byte)
#define KERNEL_CODE_SEG 8 * 1
#define KERNEL_DATA_SEG 8 * 2
#define APP_CODE_SEG (8 * 3 | 3) //设置选择子，同时设置权限
#define APP_DATA_SEG (8 * 4 | 3) //设置选择子，同时设置权限
#define TASK0_TSS_SEG (8 * 5)  //task0的tss表选择子
#define TASK1_TSS_SEG (8 * 6)  //task0的tss表选择子
#define SYSCALL_SEG   (8 * 7)  //系统调用选择子
#define TASK0_LDT_SEG (8 * 8)
#define TASK1_LDT_SEG (8 * 9)

#define TASK_CODE_SEG (8 * 0 | 0b100 | 0b11) // 设置为GDT表查询，设置权限 1 11
#define TASK_DATA_SEG (8 * 1 | 0b100 | 0b11) 

#endif //OS_H